Vacuum Hero README

Compiling:
	This should compile on FreeBSD make and GNU make.
	
	Just type this into a prompt:
		make
	
	If you are a Windows user, I can't help you there.
	You'll have to change the CFLAGS to something constant,
	as Allegro for Windows doesn't have allegro-config.

Editing:
	Two buttons are used, left and middle.
	My right mouse button doesn't work very well.
	
	Left-click: place room
	Right-click: place ramp
	A: autofix level (do this before saving or you might break your level!)
	L: load level
	S: save level
	Z/X: select object
	P: place object
	R: remove object
	T: edit object tags (note: flags are in decimal! O_O)
	
	Information on the objects:
		0: Player
			This is you. Put exactly one player in.
		
		1: Pile
			This is what you have to clean up.
			Triggers rtag + strig when sucked up.
			Will still be suckable while hidden.
		
		2: Room trigger
			Triggers rtag + strig when/while the player enters the room.
			If a & 1, then triggers WHILE, else triggers WHEN.
			If a & 2, then triggers only once.
		
		3: Proxy trigger
			Triggers rtag + strig when/while the player is in range of its box.
			You may change the box size.
			Same as with the room trigger.
		
		4: Hide-show
			Hides the room/ramp it's on.
			While/when the trigger is on, show the room/ramp.
			When the trigger is off, hide the room/ramp again.
			It can be attached to both.
			If rtag is set, then it will also show/hide objects with that tag.
			You will have to hide your objects manually, though
			- it doesn't initialise them as shown or hidden.
		
		5: Show-hide
			Exact opposite of the hide-show, except it doesn't unhide the room/ramp.
		
		6: Ramper
			When triggered, it forms a ramp between itself
			and a ramper with the same tag as its rtag.
			The ramper with the tag must be the top-left corner.
			The ramper with the rtag must be the bottom-right corner.
			Both rampers must:
				- have a room each
				- these can't be the same room
				- ramp must be contained exactly within opposite edges of the rooms
		
		7: Pile counter
			When the number of piles cleaned reaches A, this triggers rtag + strig ONCE.
		
		8: Exit
			When the player touches this, it triggers rtag + strig ONCE and turns green.
			It also exits the level.
			You may change the box size.
			If any of A, B, C are set, it unlocks a new level.
			A shows up green, B shows up yellow, and C shows up red in the menu.
		
		9: Trigger counter
			Once it gets triggered A times (internally this decrements each time),
			it will begin relaying the triggers to rtag.
			e.g.: if A is 4, and it gets triggered 4 times, it will trigger once.
			if it gets triggered 5 times, it will trigger 2 times.
			if it gets triggered 6 times, it will trigger 3 times.
			if it gets triggered 7 times, it will trigger 4 times.
	
	Object flags:
		#define OBJF_HIDDEN   0x00000001
			1: Hidden.
		#define OBJF_SOLID    0x00000002
			2: Solid (Not Implemented).
		#define OBJF_HITSOLID 0x00000004
			4: Bounce off solid objects (Not Implemented).
		#define OBJF_THRUWALL 0x00000008
			8: Go through walls (Not Implemented).
		#define OBJF_HIDEREF  0x00000010
			16: Hide the room/ramp this refers to (Not Implemented this way).
		#define OBJF_PHYSICS  0x00000020
			32: Apply physics to the object.
		#define OBJF_GRAVITY  0x00000040
			64: If physics are applied, also apply gravity.
		#define OBJF_GROUNDED 0x00000080
			128: Make the object stay on the ground.
	
	The campaign file begins with the number of levels and then each line follows this format:
		Levelfile Scriptfile Music IsUnlocked Timelimit Name
		e.g. level/default/level001.vho level/default/level001.txt 0 1 0 Welcome
		
		If Levelfile or Scriptfile are *, they won't be loaded.
		(Though you don't want to do that with Levelfile!)
		
		Music ranges from 0 to 2 at the moment.
		If Music == -1, then don't play any music (not recommended - you gotta have SOME music)
		
		If IsUnlocked is 0, don't show in the level list yet.
		If IsUnlocked is 1,2,3, show as green,yellow,red respectively.
		
		Timelimit is in seconds. If 0, then there's no time limit.
	
	The script file in this case is just a bunch of messages.
		It begins with the number of messages,
		and then has the messages you give it,
		separated by lines with @ at the start (PLEASE don't add stuff to the end).
		
		You must make sure that you don't leave any blank lines or it won't display fully.
		You can add a space if you want.
	
	To run a custom campaign, run Vacuum Hero with the campaign file name as the first command line argument.

Sound issues?
	I found that on Ubuntu 9.04, either
		- running as root (not recommended), or
		- setting sound_bits to 8 in allegro.cfg
	seemed to fix the problem.
	
	If you're using OSS and it's otherwise preoccupied by ESD, try:
		esddsp ./sh09
	Or if it's occupied by PulseAudio:
		padsp ./sh09
	
	If the sound lags or stutters,
	change sound_buffer under [vacuum_hero] in allegro.cfg.
		If it lags, decrease it.
		If it stutters, increase it.
		If it does both, try decreasing sound_freq under [sound].

Enjoy!

Made by Ben "GreaseMonkey" Russell
thematrixeatsyou [ at ] yahoo [ dot ] co [ dot ] nz
